Dynamic memory allocation is the allocation of memory (e.g., random access memory (RAM)) for use in a user program during the run-time of that program. Memory is typically allocated from a large pool of an unused memory area, known in the art as the heap. A user, such as a software programmer, a software developer, and a system administrator, can execute a program and may notice that the program is running at a speed slower than expected and/or that the program is using significantly more dynamically allocated memory than expected. The user may wish to debug how the heap is being used by the program and to help identify how the performance of a program can be optimized.
Conventional solutions for debugging dynamic memory allocations may use heuristics to categorize memory at a very high-level and generally do not furnish results that provide any value to a user. Traditional solutions do not deduce information to categorize how a program uses the dynamically allocated memory in great detail.